/* 
extends 基本使用
   类可以使用它继承的类中所有的成员（属性和方法）
   类中可以提供自己的属性和方法
   注意：如果想要给类中**新增属性**，必须先调用 super 方法
*/

// ES6 的 class 类语法
class Peron {
  // 构造函数；
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  // 方法，自动添加到原型上，同类共享
  sayHi() {
    console.log(`我是${this.name},我今年${this.age}岁了`);
  }
}

// const p1 = new Peron('zs', 18);
// console.log(p1);

/* ---------类的继承----------- */
class Student extends Peron {
  // 构造函数；
  constructor(name, age, number) {
    // 🎯 constructor 必须写上 super() 调用继承类的构造函数，否则报错
    super(name, age); // super 调用 Peron 的构造函数
    this.number = number; // 添加属于自己的属性
  }
  // 方法可以直接添加，如果同名会覆盖
  sayHi() {
    console.log('同名覆盖sayHi');
  }
  eat() {
    console.log('我能大吃一顿');
  }
}

const stu1 = new Student('八戒', 600, '110');
console.log(stu1);
stu1.sayHi();
stu1.eat();
